// // 硬绑定
// function foo() {
//     console.log( this.a );
// }

// var obj = {
//     a:2
// }

// var bar = function() {
//     foo.call( obj );
// };

// bar(); // 2
// setTimeout( bar, 100 ); // 2
// // 硬绑定的 bar 不可能再修改它的 this
// bar.call( window ); // 2
function foo() {
    console.log( this.a );
    }
    var a = 2;
    var o = { a: 3, foo: foo };
    var p = { a: 4 };
    o.foo(); // 3
    (p.foo = o.foo)(); // 2
    p.foo();